package reflect;

import java.lang.reflect.Method;

public class ReflectDemo6 {
    public static void main(String[] args) throws Exception {
        Person p = new Person();
//        p.heihei();//编译不通过,私有方法不能在类的外部访问

        Class cls = Class.forName("reflect.Person");
        Object o = cls.newInstance();//Person p = new Person();
        /*
            类对象上:
            getMethod()和getMethods()获取的是该类中的公开方法(包含从超类继承的)
         */
//        Method method = cls.getMethod("heihei");
        /*
            getDeclaredMethod()和getDeclaredMethods()获取的是该类自己定义的方法(包含私有的,不包含继承的)
         */
        Method method = cls.getDeclaredMethod("heihei");
        method.setAccessible(true);//强行打开访问权限
        method.invoke(o);//p.heihei();
        method.setAccessible(false);//用完后最好还原
    }
}
